Skip to main content

Jakarta EE

What is Jakarta EE?​

  • Jakarta EE (aka Java EE)
  • Wikipedia:
    • Jakarta EE, formerly Java Platform, Enterprise Edition (Java EE) and Java 2 Platform, Enterprise Edition (J2EE), is a set of specifications, extending Java SE with specifications for enterprise features such as distributed computing and web services. Jakarta EE applications are run on reference runtimes, which can be microservices or application servers, which handle transactions, security, scalability, concurrency and management of the components they are deploying.
    • Jakarta EE is defined by its specification. The specification defines APIs (application programming interface) and their interactions. As with other Java Community Process specifications, providers must meet certain conformance requirements in order to declare their products as Jakarta EE compliant.
  • "a set of libraries that enables you to build robust applications by both abstracting things out for you and constraining you to adhere to certain patterns", reddit

Must-know Sites​

Is Java EE outdated?​

  • Is Java EE outdated?
    • comments
    • under most upvoted comment
      • @DevRezaur 2 years ago (edited)
        • Don't know about US or Europe, but in my country Bangladesh, recruiters are always looking for good full stack Java dev (Spring Boot + Angular). Because good java devs are becoming rare and rare in my country. I myself, got many offers from local tech companies where some of my senior works. But since I'm in my final year, and have lots of academic pressure, I had to deny them for now. I see many of my university juniors are avoiding Java like it is some ancient tech. Despite the fact that, there are many companies in my country who are heavily invested in Java stack. And need a healthy supply of good Java devs.
      • @silentwater79 2 years ago (edited)
        • @FGCVidz Yes, and in most of the jobs in the Enterprise field you just have to work with old legacy shit code which still dates back to Java 8 or even 6 and outdated application servers and have to maintain this crap and keep it somehow running. You are lucky if you can start a new application or service from the green field with new technology. If you are lucky to start over, I would never choose JEE to start a new project.
      • @silentwater79 2 years ago
        • @DevRezaur They mostly look for Java Devs, because there is a lot of shit outdated ancient Java Code out there in the Enterprise Field and they are looking for someone to keep this old shit running and not to start something new with new technology.
      • @DevRezaur 2 years ago (edited)
        • @silentwater79 Not really. In my country mobile banking and online banking is on the rise. And big corporations always tend to use java. Thats why they develop these online banking platforms using Java. I actually mentioned that HRs are looking for Spring Boot + Angular devs. Spring Boot is not legacy java. Companies are using spring boot to create micro services. And micro service architecture is not something that I would call a legacy system. And I understand you point of view. In US and Europe if you think about enterprise level legacy code, Java (Servlet + JSP) will come in your mind. But we don’t use it in our country. In my country when ever I think about enterprise level legacy code, C# and dot NET comes in my mind
      • @Urbaez22 1 year ago
        • @silentwater79 you really have to be kidding.. Or you don't have a clue about what Java ecosystem is.. If what you say were true, recruiters would be looking for Java 1.4-1.6 devs, not asking for Java 11+ devs.. SpringBoot came out less than 10 years ago, and since then it has exploded in the microservices environment.. Since Java 11, that "slowness" in development with Java passed to be a remembering.. In execution Java ByteCode is faster than any other interpreted language (unless compiled to JVM, as Groovy, JRuby, Jython, Clojure, etc)..
    • under 2nd most upvoted comment
      • @silentwater79 2 years ago
        • It is outdated. The just invest in it, because most enterprises have a ton of old outdated Java / Java EE code running which is still running on JEE6 and Java 8 or even 6. They most of them just fear the cost of switching technology. If the switch to Spring Boot, it often means to rewrite 70-80% of the whole Application. In this case you better press File → New Project. The just hope the can migrate with less effort to Jakarta EE and keep most of their crap code.
      • @orlovskyconsultinggbr2849 2 years ago
        • @silentwater79 Well if there a lot of EJB and JPA in project and circle dependencies and 0 good documentation on design, yeah its a challange. The solution is pretty simple hire external consultancy agency and let them refactor the code and prepare for needed upgrade to newer version of Java EE which is Jakarta. There exist stuff like microprofile , helidon or even Vaadin. Question is when old software brakes and the upgrade will be unavoidable?
      • @orlovskyconsultinggbr2849 2 years ago
        • @silentwater79 Additionally a proper requirements engineering must be executed and business logic should be verfied.
      • @orlovskyconsultinggbr2849 2 years ago
        • @asoftraiden Maybe for you its dead, but German companies invested like $$$ a lot in JEE

Java EE vs Java SE​

stackoverflow

Java SE = Standard Edition. This is the core Java programming platform. It contains all of the libraries and APIs that any Java programmer should learn (java.lang, java.io, java.math, java.net, java.util, etc...).

Java EE = Enterprise Edition. From Wikipedia:

The Java platform (Enterprise Edition) differs from the Java Standard Edition Platform (Java SE) in that it adds libraries which provide functionality to deploy fault-tolerant, distributed, multi-tier Java software, based largely on modular components running on an application server.

In other words, if your application demands a very large scale, distributed system, then you should consider using Java EE. Built on top of Java SE, it provides libraries for database access (JDBC, JPA), remote method invocation (RMI), messaging (JMS), web services, XML processing, and defines standard APIs for Enterprise JavaBeans, servlets, portlets, Java Server Pages, etc...

JEE vs Spring Framework​

4 reasons mainly

First, while in theory there is a single Java EE specification and each application server is supposed to be compliant, in practice there are some blurry areas where each server implementation differs. As an example, migrating an application from Websphere to JBoss is a difficult problem. With Spring. there is only one implementation so you are not tied to an application server. In fact you can just use a servlet container (Tomcat/Jetty) which is very lightweight.

Secondly, several people start working on a Java EE project and soon enough they start to use application server specific APIs (Weblogic is the biggest problem) without realizing that they are not part of the Java EE spec. This ties the application to the application server even more (coupled with the first point).

Third, Spring is where the innovation happens. Spring adds several new APIs and when they become successful, Java EE standardized them. Several of Java EE specs, have actually been influenced by Spring libraries. For example, Spring currently offers Spring Cloud which contains several interesting features which are not part of Java EE.

Last but not least, if your application is a Spring one, it means that 99% of your libraries are in your WAR file and you can upgrade them at any time. In a Java EE environment, several libraries are part of the application server. Upgrading them is a PITA (Classic example is the XML libraries)

Basically

  • if you want maximum power/flexibility use Spring
  • if you want to follow standards and are conservative, use JavaEE

I only choose JavaEE, when the customer requires it.